package com.wdb007.venus.web.api.controller;

import java.math.BigDecimal;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.wdb007.venus.svc.biz.manager.SmsSendManager;
import com.wdb007.venus.svc.biz.utils.DateFormatUtil;
import com.wdb007.venus.svc.facade.UserService;
import com.wdb007.venus.svc.facade.WxAPPMessagePushService;
import com.wdb007.venus.svc.facade.constant.BizConstants;
import com.wdb007.venus.web.api.model.BaseResponse;

/**
 * 对外调用的消息通知 1.小程序服务消息 2.短信通知
 */
@Controller
@RequestMapping("/msg/")
public class MsgNoticeController extends BaseController {

	private final static Logger logger = LoggerFactory.getLogger(MsgNoticeController.class);

	@Autowired
	private WxAPPMessagePushService wxAPPMessagePushService;
	@Autowired
	private UserService userService;
	@Autowired
	private SmsSendManager smsSendManager;

	// 小程序消息通知,通用
	@RequestMapping(value = "/sendWxMsgNotice", method = RequestMethod.POST)
	@ResponseBody
	public BaseResponse sendWxMsgNotice(HttpServletRequest request) {
		BaseResponse baseResponse = success();
		//
		String userId = request.getParameter("userid");
		String contentStr = request.getParameter("content");
		String templateId = request.getParameter("templateId");
		String page = request.getParameter("page");

		try {
			checkIsNull("content", contentStr);
			if (ObjectUtils.isEmpty(userId)) {
				// 根据手机号查询userId
				String mobileNo = request.getParameter("mobileNo");
				checkIsNull(mobileNo, "mobileNo或userId");
				userId = userService.getUserInfo(mobileNo);
			}
			checkIsNull(userId, "userId");
			checkIsNull(templateId, "templateId");
			Map<String, Object> content = JSON.parseObject(contentStr);

			wxAPPMessagePushService.sendContent(templateId, content, Long.valueOf(userId), null, page);
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}
		return baseResponse;
	}
	
	@RequestMapping(value = "/sendRechangeToAccountNotice", method = RequestMethod.POST)
	@ResponseBody
	public BaseResponse sendRechangeToAccountNotice(HttpServletRequest request) {
		BaseResponse baseResponse = success();
		String mobileNo = request.getParameter("mobileNo");
		String payTime = request.getParameter("payTime");
		String addAmount = request.getParameter("addAmount");
		String userid = request.getParameter("userid");
		
		wxAPPMessagePushService.sendRechangeToAccountNotice(mobileNo, BizConstants.ACCOUNT_CASH_CHARGE_TYPE_30, DateFormatUtil.parseDate(payTime), new BigDecimal(addAmount), Long.valueOf(userid));
		return baseResponse;
	}
	
	@RequestMapping(value = "/sendVipCardToAccountNotice", method = RequestMethod.POST)
	@ResponseBody
	public BaseResponse sendVipCardToAccountNotice(HttpServletRequest request) {
		BaseResponse baseResponse = success();
		
		String vipType = request.getParameter("vipType");
		String addAmount = request.getParameter("addAmount");
		String operations = request.getParameter("operations");
		String payTime = request.getParameter("payTime");
		String userid = request.getParameter("userid");
		String mobileNo = request.getParameter("mobileNo");
		String endtime = request.getParameter("endtime");

		wxAPPMessagePushService.sendVipCardToAccountNotice(Integer.valueOf(vipType), new BigDecimal(addAmount), payTime, Long.valueOf(userid), endtime, BizConstants.VIP_CHARGE_TYPE_20);

		return baseResponse;
	}
//	@RequestMapping(value = "/sendErrorMsg", method = RequestMethod.POST)
//	@ResponseBody
//	public BaseResponse sendErrorMsg(String code) {
		 
//		if(code.equals("1")) {
//			String[] mobiles = {"13914718214",
//				"17701601800",
//				"15800910562",
//				"17701819224",
//				"17602152340",
//				"18767169097",
//				"13917266538",
//				"15921023118",
//				"15618890899",
//				"13564354353",
//				"13321882106",
//				"13917463923",
//				"18516029362",
//				"18917025695",
//				"15221841856",
//				"13817199927",
//				"13817028162",
//				"13564046030",
//				"13817790853",
//				"15800638348",
//				"13701913973",
//				"17701759526",
//				"18217779315",
//				"13512194546",
//				"13636601485",
//				"13761978512",
//				"13801968307",
//				"15618201575",
//				"13816875782",
//				"13816899772",
//				"18017242317",
//				"18516750616",
//				"13774261766",
//				"13916408668",
//				"13761023061",
//				"13818481169",
//				"13817509450",
//				"13764081853",
//				"13916128553",
//				"18930270252",
//				"13917508057",
//				"13661993626",
//				"18201973898",
//				"13681616441",
//				"13788925288",
//				"13818409598",
//				"18916903477",
//				"17602164986",
//				"13816934661",
//				"13816955776",
//				"18930175603",
//				"13621971994",
//				"13564316920",
//				"13482668616",
//				"15121150829",
//				"13524542028",
//				"13916448628",
//				"18017110977",
//				"13816458835",
//				"13917323787",
//				"13917949193",
//				"13795224998",
//				"18621339482",
//				"13636692723",
//				"13817981351",
//				"17721086640",
//				"18930177265",
//				"13636325804",
//				"15201760467",
//				"13681760648",
//				"13564333519",
//				"13611988477",
//				"13816062834",
//				"18621692321",
//				"17721247809",
//				"13817586670",
//				"13691909600",
//				"15821896540",
//				"17721209963",
//				"13661635088",
//				"13585680078",
//				"13917099904",
//				"15921215975",
//				"13917968119",
//				"18939893985",
//				"15821210625",
//				"13585636671",
//				"13661973001",
//				"18621778181",
//				"18121013832",
//				"13301151856"} ;
//			for(int i=0;i<mobiles.length;i++) {
//				wxAPPMessagePushService.sendErrorMsg(mobiles[i]);
//			}
//		} else {
//			wxAPPMessagePushService.sendErrorMsg("15618890899");
//		}
//		BaseResponse baseResponse = success();

//		return baseResponse;
//	}
}
